﻿using System;

namespace Aquarinum.Base.Infrastructure.EventBus.Interfaces
{
    /// <summary>
    /// 定义事件源接口，所有的事件源都要实现该接口
    /// </summary>
    public interface IEventData<TMessage>: IEventData where TMessage : class
    {
  

        /// <summary>
        /// 消息内容
        /// </summary>
        TMessage Message { get; set; }

      
    }

    public interface IEventData 
    {
        /// <summary>
        /// 事件发生的时间
        /// </summary>
        DateTime EventTime { get; set; }
       

        /// <summary>
        /// 事件ID（雪花算法）
        /// </summary>
        long Eventid { get; set; }

        /// <summary>
        /// 重试次数
        /// </summary>
        int RetryCount { get; set; }

        /// <summary>
        /// 已经被订阅处理
        /// </summary>
        bool Subscribed { get; set; }

        /// <summary>
        /// 需要发送发确认消息已消费
        /// </summary>
        bool NeedCheck { get; set; }

        /// <summary>
        /// 消费方遇到错误需要重试
        /// </summary>
        bool NeedRetry { get; set; }
    }
}